package com.xinggq.pay.service.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xinggq.pay.service.context.AppIdContext;
import com.xinggq.pay.service.dto.YsePayConfigDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import com.xinggq.common.utils.Validate;

/**
 * 支付公共参数配置实体类
 *
 * @author system
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("yse_pay_config")
public class YsePayConfigEntity {


  /**
   * 主键ID
   */
  @TableId(value = "id", type = IdType.AUTO)
  private Long id;

  /**
   * 应用ID
   */
  private Long appId;

  /**
   * 方法
   */
  private String method;

  /**
   * 方法中文名
   */
  private String methodExplain;

  /**
   * 在银盛支付开设的服务商商户号
   */
  private String partnerId;

  /**
   * 收款商户号,（由银盛支付生成并下发）
   */
  private String sellerId;

  /**
   * 业务代码 ，请联系银盛客户经理获取。注意：业务代码非固定值，不同到账方式需要传不同的业务代码
   */
  private String businessCode;

  /**
   * 交易成功异步通知到商户的后台地址
   */
  private String notifyUrl;

  /**
   * 从 DTO 转换为 Entity
   *
   * @param dto YsePayConfigDTO 对象
   * @return YsePayConfigEntity 对象
   */
  public static YsePayConfigEntity fromDTO(YsePayConfigDTO dto) {
    Validate.objectNotNull(dto, "YsePayConfigDTO封装类不能为空");
    YsePayConfigEntity entity = new YsePayConfigEntity();
    return entity.setMethod(dto.method())
        .setMethodExplain(dto.methodExplain())
        .setPartnerId(dto.partnerId())
        .setSellerId(dto.sellerId())
        .setBusinessCode(dto.businessCode())
        .setNotifyUrl(dto.notifyUrl())
        .setAppId(AppIdContext.getAppId());
  }

}